从这一章节开始我们尝试去系统了解蓝牙协议栈,在这之前我们需要储备以下知识点。
蓝牙是一种短距离的无线通信技术,设计之初是为了取代有线连接,其鲁棒性、低功耗、低成本特性已经让其广泛应用各种终端产品。
蓝牙核心规范是根据不同终端产品可选择、可裁剪的。根据功耗和速率主要被设计两种设备类型——LE和BR,两种设备都实现设备发现、连接建立、连接机制。同时BR无线系统还包含一个可选择的EDR设备类型,EDR又包含一个二选一的MAC层以及可扩展的PHY层,基于这些设计BR的速率可以达到721.2kb/s,EDR可以达到2.1Mbps以及工作在高速模式的802.11AMP 54Mbps。
蓝牙发展至今,已经从1.0到现在5.0版本了,前面3个版本蓝牙主要是以BR/EDR/HS发展,也就是我们常说的经典蓝牙,4.0版本后引入LE,蓝牙技术联盟(Bluetooth Special Interest Group,简称SIG)维护着蓝牙核心规范。我们不难看出,从高速AMP直接使用802.11 PHY,还是低功耗参考使用802.15.4以及最新标准的蓝牙5.0协议,SIG一直在功耗、速率、和最新的物联网功能上面平衡。
注意:注意区分BLE、BR、EDR等特定术语,区分低功耗蓝牙和经典蓝牙。
蓝牙核心系统由两个逻辑实体Host&Controller组成,一个Host对应一个或者多个Controller,Host和Controller之间通过HCI接口层交互。Controller对应两种类型:Primary Controllers 和Secondary Controllers。通常来说Primary Controllers只有一个,Secondary Controllers可能有多个。
上图完整了演示了LE核心系统、BR/EDR核心系统、带Secondary Controller AMP的BR/EDR核心系统、以及合并LE&BR/EDR的双模蓝牙系统。
BLE 工作在无需认证的2.4G免费频段,该频段广泛应用于ISM(工业、科学、医疗)领域。通过跳频通信实现抗干扰特性,GFSK调制,采用1Mbps码元率PHY层设计,可以实现1Mbps波特率通信,BLE5.0优化的物理层可以工作在2Mbps码元率。
2.4G的频段按照每2M带宽划分为40个信道,通过FDMA(频分多址)和TDMA(时分多址)实现多路访问信道资源。
信道资源被我们约定的Events
划分为以时间单位访问,我们的有效数据也包含在这些Events
里面,Events
以连接状态为区分,包含未连接的Advertising Events
和已经连接的 Connection events
在物理信道发送广播包的设备我们称为Advertisers
,接收到该广播包但是还没有建立连接意图前的设备我们称为Scanners
。如下图所示,Advertisers
在3个广告信道(可配置)轮询发生Advertising Events
,Scanners
接收到该广告包后可能在该信道可能发生事件类型的为ScanReq
的扫描请求和ScanRsp
扫描回复。
如果此时Scanner
产生了尝试建立连接请求,Scanner
身份切换为为Initiators
。Initiators
会在接收到Advertising Events
产生一个时间类型为Connect
的连接请求。一旦建立连接请求,Advertiser
和Initiators
分别切换为Slave
和Master
。
在建立连接的时候,Master会基于某种算法产生一个跳频序列,保证在37个数据信道按照某个序列进行跳频切换,以及双方会约定一个跳频间隔,保证通信双方在固定时间在固定信道相遇。
Host
文章所有代码、工具、文档开源。加入我们QQ群 591679055获取更多支持,共同研究CC2640R2F&BLE5.0。